package org.example.lethear.dto.report;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 举报信息DTO
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ReportDTO {
    
    private Long id;
    private Integer targetType;
    private String targetTypeName;
    private Long targetId;
    private Integer reasonType;
    private String reasonTypeName;
    private String reasonDetail;
    private List<String> evidenceUrls;
    private Integer status;
    private String statusName;
    private String handleResult;
    private LocalDateTime createTime;
    private LocalDateTime handleTime;
    
    /**
     * 举报者信息
     */
    private ReporterInfo reporter;
    
    /**
     * 处理者信息
     */
    private HandlerInfo handler;
    
    /**
     * 目标内容信息
     */
    private TargetContent targetContent;
    
    /**
     * 举报者信息内部类
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public static class ReporterInfo {
        private Long id;
        private String username;
        private String nickname;
        private String avatar;
    }
    
    /**
     * 处理者信息内部类
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public static class HandlerInfo {
        private Long id;
        private String username;
        private String nickname;
    }
    
    /**
     * 目标内容信息内部类
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public static class TargetContent {
        private Long id;
        private String title; // 帖子标题或评论内容摘要
        private String content; // 内容摘要
        private String authorName; // 内容作者
        private LocalDateTime createTime;
        private Boolean exists; // 内容是否还存在
    }
} 